#define _CRT_SECURE_NO_WARNINGS 1
#include"SList.h"

void test()
{
	SLTNode* node1 = (SLTNode*)malloc(sizeof(SLTNode));
	SLTNode* node2 = (SLTNode*)malloc(sizeof(SLTNode));
	SLTNode* node3 = (SLTNode*)malloc(sizeof(SLTNode));
	SLTNode* node4 = (SLTNode*)malloc(sizeof(SLTNode));

	node1->data = 1;
	node2->data = 2;
	node3->data = 3;
	node4->data = 4;

	SLTNode* phead = node1;

	node1->next = node2;
	node2->next = node3;
	node3->next = node4;
	node4->next = NULL;

	SLTPrint(phead);

}

void test01()
{
	SLTNode* phead = NULL;
	SLTPushback(&phead, 1);	
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);
}

void test02()
{
	SLTNode* phead = NULL;
	SLTPushhead(&phead, 1);
	SLTPushhead(&phead, 2);
	SLTPushhead(&phead, 3);
	SLTPushhead(&phead, 4);
	SLTPrint(phead);
}

void test03()
{
	SLTNode* phead = NULL;

	SLTPushback(&phead, 1);
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);

	SLTDelback(&phead);
	SLTPrint(phead);
	SLTDelback(&phead);
	SLTPrint(phead);
	SLTDelback(&phead);
	SLTPrint(phead);
	SLTDelback(&phead);
	SLTPrint(phead);
}

void test04()
{
	SLTNode* phead = NULL;

	SLTPushback(&phead, 1);
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);

	SLTDelhead(&phead);
	SLTPrint(phead);
	SLTDelhead(&phead);
	SLTPrint(phead);
	SLTDelhead(&phead);
	SLTPrint(phead);
	SLTDelhead(&phead);
	SLTPrint(phead);
}

void test05()
{
	SLTNode* phead = NULL;

	SLTPushback(&phead, 1);
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);

	SLTNode* find = SLTFind(phead, 1);
	SLTInsert(&phead, find, 114514);
	SLTPrint(phead);

}

void test06()
{
	SLTNode* phead = NULL;

	SLTPushback(&phead, 1);
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);

	SLTNode* find = SLTFind(phead, 1);
	SLTInsertAfter(find, 114514);
	SLTPrint(phead);
}

void test07()
{
	SLTNode* phead = NULL;

	SLTPushback(&phead, 1);
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);

	SLTNode* find = SLTFind(phead, 2);
	SLTErase(&phead, find);
	SLTPrint(phead);

}

void test08()
{
	SLTNode* phead = NULL;

	SLTPushback(&phead, 1);
	SLTPushback(&phead, 2);
	SLTPushback(&phead, 3);
	SLTPushback(&phead, 4);
	SLTPrint(phead);

	//SLTNode* find = SLTFind(phead, 2);
	//SLTEraseAfter(find);
	//SLTprint(phead);

	SLTBreak(&phead);
	SLTPrint(phead);
}

int main()
{
	//test();
	//test01();//1 2 3 4 NULL
	//test02();//4 3 2 1 NULL
	//test03();
	//test04();
	//test05();//1 114514 .....
	//test06();
	//test07();
	test08();
	return 0;
}